An integrated development environment (IDE) provides a set of integrated tools for developing software. The tools are generally run from a single user interface or shell and typically include a text editor, a compiler, and a debugger. Other tools, such as build automation tools and interpreters may be included in the IDE. The IDE may support multiple programming languages and source code scripts, such as C++, C#, VISUAL BASIC®, SQL, and the like. The IDE interface provides users with the same look and feel for the different programming languages.
An IDE contains zero or one solution, and each solution contains zero or more projects. A project contains zero or more source code artifacts and other supporting files. Both a project and a solution also contain configurations to facilitate its various services such as build, publish etc. Build service typically invokes a compiler. All or a subset of source code artifacts and configurations are passed to the compiler. The configuration typically instructs compiler to target a particular runtime environment and to produce a corresponding output artifact.
The compiler is not part of the IDE, but is an independent component that can be invoked from the IDE or from outside of IDE for example through the command line or WINDOWS POWERSHELL®.
Most IDEs or project systems offer configuration options where a single configuration comprises of a number of settings, including the specification of a given target environment to build against. Only one configuration or set of settings can be active at a given time, which allows the user to target only the selected runtime environment.
To target one runtime environment using multiple compilers an IDE uses different projects or invoke separate build episodes with different configurations. Similarly, to target different runtime environments, whether those environments are homogeneous and heterogeneous, the IDE uses different projects or invoke separate build episodes.